package com.hzc.controller;

import com.hzc.pojo.User;
import com.hzc.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.UUID;

/**
 * @author flowerWorm
 * @createTime 2022年05月22日 15:08:00
 */
@CrossOrigin // 在服务器端支持跨域访问
//@Controller
@RestController // 如果本类中全部都是ajax方法, 则使用此注解, 方法上的@ResponseBody 可省略
@RequestMapping("/user")
public class UserController {

    public static final int PAGE_SIZE = 5;

    // 切记切记: 一定会有业务逻辑层的对象注入
    @Autowired
    UserService userService;

    /**
     * url: url	/user/selectUserPage?userName=z&userSex=男&page=null
     * @param userName 前端页面传入
     * @param userSex 前端页面传入
     * @param page 前端页面传入
     * @return List<User> 对象
     */
    @RequestMapping("/selectUserPage") // 指定方法的请求路径
//    @ResponseBody // 专门处理ajax请求的注解, 使用该注解时需要在xml 里配置 <mvc:annotation-driven>
    public List<User> selectUserPage(String userName, String userSex, Integer page) {
        int startRow = 0;
        if (page != null) {
            startRow = (page - 1) * PAGE_SIZE;
        }
        return userService.selectUserPage(userName, userSex, startRow);
    }

    /**
     * url: /user/getRowCount?userName=z&userSex=男
     * @param userName 前端页面传入
     * @param userSex 前端页面传入
     * @return 返回数据的总行数
     */
    @RequestMapping("/getRowCount")
//    @ResponseBody
    public int getRowCount(String userName, String userSex) {
        return userService.getRowCount(userName, userSex);
    }

    /**
     * url:	/user/createUser?user=
     * @param cardType 前端页面传入
     * @param cardNo 前端页面传入
     * @param userName 前端页面传入
     * @param userSex 前端页面传入
     * @param userAge 前端页面传入
     * @param userRole 前端页面传入
     * @return 返回一个user对象处理请求
     */
    @RequestMapping("/createUser")
//    @ResponseBody
    public int createUser(String cardType, String cardNo, String userName, String userSex, String userAge, String userRole) {
        // 按理说此处user的主键要么是自增主键不传入, 要么就是varchar类型的uuid
        String userId = UUID.randomUUID().toString().toUpperCase();
        User user = new User(userId, cardType, cardNo, userName, userSex, userAge, userRole);
        return userService.createUser(user);
    }

    /**
     * url:	/user/ deleteUserById?userId= 15968162087363060
     * @param userId 前端页面传入
     * @return 删除用户
     */
    @RequestMapping("/deleteUserById")
//    @ResponseBody
    public int deleteUserById(String userId) {
        return userService.deleteUserById(userId);
    }
}
